package com.arpa.ntocc.common.common.util.excel;

import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
/**
 * 问题描述：excel中数字转为String类型时会精确到小数点后1位。如 excel中100转为java String字段100.0
 * 此类就是实现 excel中100转为java String字段100
 *
 * convert实现类的功能包含：
 * easyExcel读或写Excel时， java实体与excel数据相互转换时自定义处理，可以实现数字与字符串之间转换，或者男、女字样转为0和1
 *
 * @date  2020年3月19日
 * @author liujiabao
 */
public class StringConverter implements Converter<String> {

    /**
     * 转换为java实体的String类型
     * @return
     */
    @Override
    public Class supportJavaTypeKey() {
        return String.class;
    }

    @Override
    public CellDataTypeEnum supportExcelTypeKey() {
        return CellDataTypeEnum.NUMBER;
    }

    @Override
    public String convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
       switch (cellData.getType()){
           case NUMBER:
               return cellData.getNumberValue().stripTrailingZeros().toPlainString();
           case STRING:
           case DIRECT_STRING:
               return cellData.getStringValue();
           default:
               return "";
       }
    }

    @Override
    public CellData convertToExcelData(String s, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
        return null;
    }

}
